1. Field of the Invention
The present invention relates to a storage subsystem and a method of executing commands by a controller. More particularly, the invention relates to a technique in which a controller of a storage subsystem receiving commands issued by a host computer determines the priority orders of executions of the commands and schedules the executions.
2. Description of the Related Art
In recent years, computer systems based on a SAN (storage area network) have exploited virtualization techniques in order to effectively use resources within server computers or data storage apparatus. Especially, virtual OS techniques in which plural OSes are operated within a server computer are rapidly spreading.
Under these virtual environments, a data storage apparatus receives accesses from plural virtual OSes via the same port. Therefore, there is the possibility that the storage apparatus receives I/O commands such as read commands and write commands from a virtual OS via one port while receiving control commands associated with device recognition from another virtual OS. Therefore, the processor in charge of the port processes both kinds of commands, i.e., I/O commands and control commands. Generally, an I/O command places greater load on the processor than a control command. Accordingly, where the storage apparatus is receiving multiple I/O commands from a virtual OS and thus high load is placed on the processor, if control commands are received from a second virtual OS, the processor cannot process the control commands within a stipulated period of time, inducing a timeout error. As a result, in the worst case, the system associated with the second virtual OS becomes stalled. On the other hand, if priority is given to the processing of control commands, I/O processing that is the intrinsic processing of the storage apparatus is delayed, thus affecting the system performance.
Patent reference 1 cited below discloses a technique for preventing processing of a certain host or device from being performed with high priority at all times, thus making uniform every set of processing. In particular, in the technique of patent reference 1, after the termination of execution of commands from a certain host, the control apparatus places the execution priority order of enqueued commands from this host into the lowest position. Priority is given to processing of commands from other hosts. After the end of execution of commands issued to a certain device, the execution priority order of enqueued commands from the certain device is placed at the lowest position. Priority is given to processing of commands issued to other devices.
Patent reference 2 discloses a technique for controlling the number of commands issued in a multiplex manner from a host device. In particular, in the technique of patent reference 2, the storage controller calculates the number of receivable commands for each port. The host device is informed of this number. The host device issues commands to the storage controller according to the notified number of receivable commands.
Patent reference 3 discloses a system for assuring quick response to commands to execute a certain process with high priority rather than a process scheduled by a dynamic priority degree scheduling mechanism.    Patent reference 1: JP-A-6-119282    Patent reference 2: JP-A-2007-323356    Patent reference 3: JP-A-6-35854
None of the data storage apparatus disclosed in the above-cited patent references have scheduled processing of commands while taking account of the kinds and attributes of the commands. Consequently, it has been difficult to process time-critical control commands while suppressing deterioration of the system performance to a minimum.